// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: 'yxzclassroomquery-2e2n5pc39df1a0'
})
var xlsx = require('node-xlsx');
const db = cloud.database()
console.log(0);

exports.main = async (event, context) => {
  let {
    fileID
  } = event
  //1,通过fileID下载云存储里的excel文件
  console.log(1);
  const res = await cloud.downloadFile({
    fileID: fileID,
  })
  const buffer = res.fileContent

  const tasks = [] //用来存储所有的添加数据操作
  //2,解析excel文件里的数据
  var sheets = xlsx.parse(buffer); //获取到所有sheets
  const all_excel_data = []; // 用来存储所有的excel数据
  console.log("2");

  sheets.forEach(function (sheet) {
    console.log(sheet['name']);
    for (var rowId in sheet['data']) {
      console.log(rowId);
      var row = sheet['data'][rowId]; //第几行数据
      if (rowId > 0 && row) { //第一行是表格标题，所有我们要从第2行开始读
        //3，把解析到的数据存到excelList数据表里
        all_excel_data.push({
          bmh: row[0], //报名号
          xm: row[1].trim(), //姓名
          kch: row[2], //考场号
          kcdd: row[3].trim(), //考场地点
          zwh: row[4] //座位号
        })
        // 一条一条add会导致资源超出限额
        /* const promise = db.collection('students')
          .add({
            data: {
              bmh: row[0], //报名号
              xm: row[1], //姓名
              kch: row[5], //考场号
              ksdd: row[6], // 考试地点
              kcdd: row[7], //考场地点
              zwh: row[8] //座位号
            }
          })
        tasks.push(promise) */
      }
    }
  });

  // 等待所有数据添加完成 该段代码会造成资源超出限制
  /* 
    // 等待所有数据添加完成
  let result = await Promise.all(tasks).then(res => {
    return res
  }).catch(function(err) {
    return err
  })
  return result
  */
  console.log("3");
  console.log(all_excel_data);
  let result = await db.collection("students").add({ data: all_excel_data }).then(res => {
    return res;
  }).catch(err => {
    return err;
  })
  return result;
}